{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "from sklearn.model_selection import train_test_split\n",
    "import numpy as np\n",
    "\n",
    "from sklearn.linear_model import LogisticRegression\n",
    "from sklearn.tree import DecisionTreeClassifier\n",
    "from sklearn.metrics import accuracy_score\n",
    "from sklearn.model_selection import GridSearchCV"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "outputs": [
    {
     "data": {
      "text/plain": "      fixed acidity  volatile acidity  citric acid  residual sugar  chlorides  \\\n0               7.4             0.700         0.00             1.9      0.076   \n1               7.8             0.880         0.00             2.6      0.098   \n2               7.8             0.760         0.04             2.3      0.092   \n3              11.2             0.280         0.56             1.9      0.075   \n4               7.4             0.700         0.00             1.9      0.076   \n...             ...               ...          ...             ...        ...   \n1594            6.2             0.600         0.08             2.0      0.090   \n1595            5.9             0.550         0.10             2.2      0.062   \n1596            6.3             0.510         0.13             2.3      0.076   \n1597            5.9             0.645         0.12             2.0      0.075   \n1598            6.0             0.310         0.47             3.6      0.067   \n\n      free sulfur dioxide  total sulfur dioxide  density    pH  sulphates  \\\n0                    11.0                  34.0  0.99780  3.51       0.56   \n1                    25.0                  67.0  0.99680  3.20       0.68   \n2                    15.0                  54.0  0.99700  3.26       0.65   \n3                    17.0                  60.0  0.99800  3.16       0.58   \n4                    11.0                  34.0  0.99780  3.51       0.56   \n...                   ...                   ...      ...   ...        ...   \n1594                 32.0                  44.0  0.99490  3.45       0.58   \n1595                 39.0                  51.0  0.99512  3.52       0.76   \n1596                 29.0                  40.0  0.99574  3.42       0.75   \n1597                 32.0                  44.0  0.99547  3.57       0.71   \n1598                 18.0                  42.0  0.99549  3.39       0.66   \n\n      alcohol  quality  \n0         9.4        5  \n1         9.8        5  \n2         9.8        5  \n3         9.8        6  \n4         9.4        5  \n...       ...      ...  \n1594     10.5        5  \n1595     11.2        6  \n1596     11.0        6  \n1597     10.2        5  \n1598     11.0        6  \n\n[1599 rows x 12 columns]",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>fixed acidity</th>\n      <th>volatile acidity</th>\n      <th>citric acid</th>\n      <th>residual sugar</th>\n      <th>chlorides</th>\n      <th>free sulfur dioxide</th>\n      <th>total sulfur dioxide</th>\n      <th>density</th>\n      <th>pH</th>\n      <th>sulphates</th>\n      <th>alcohol</th>\n      <th>quality</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>7.4</td>\n      <td>0.700</td>\n      <td>0.00</td>\n      <td>1.9</td>\n      <td>0.076</td>\n      <td>11.0</td>\n      <td>34.0</td>\n      <td>0.99780</td>\n      <td>3.51</td>\n      <td>0.56</td>\n      <td>9.4</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>7.8</td>\n      <td>0.880</td>\n      <td>0.00</td>\n      <td>2.6</td>\n      <td>0.098</td>\n      <td>25.0</td>\n      <td>67.0</td>\n      <td>0.99680</td>\n      <td>3.20</td>\n      <td>0.68</td>\n      <td>9.8</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>7.8</td>\n      <td>0.760</td>\n      <td>0.04</td>\n      <td>2.3</td>\n      <td>0.092</td>\n      <td>15.0</td>\n      <td>54.0</td>\n      <td>0.99700</td>\n      <td>3.26</td>\n      <td>0.65</td>\n      <td>9.8</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>11.2</td>\n      <td>0.280</td>\n      <td>0.56</td>\n      <td>1.9</td>\n      <td>0.075</td>\n      <td>17.0</td>\n      <td>60.0</td>\n      <td>0.99800</td>\n      <td>3.16</td>\n      <td>0.58</td>\n      <td>9.8</td>\n      <td>6</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>7.4</td>\n      <td>0.700</td>\n      <td>0.00</td>\n      <td>1.9</td>\n      <td>0.076</td>\n      <td>11.0</td>\n      <td>34.0</td>\n      <td>0.99780</td>\n      <td>3.51</td>\n      <td>0.56</td>\n      <td>9.4</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>...</th>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n      <td>...</td>\n    </tr>\n    <tr>\n      <th>1594</th>\n      <td>6.2</td>\n      <td>0.600</td>\n      <td>0.08</td>\n      <td>2.0</td>\n      <td>0.090</td>\n      <td>32.0</td>\n      <td>44.0</td>\n      <td>0.99490</td>\n      <td>3.45</td>\n      <td>0.58</td>\n      <td>10.5</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>1595</th>\n      <td>5.9</td>\n      <td>0.550</td>\n      <td>0.10</td>\n      <td>2.2</td>\n      <td>0.062</td>\n      <td>39.0</td>\n      <td>51.0</td>\n      <td>0.99512</td>\n      <td>3.52</td>\n      <td>0.76</td>\n      <td>11.2</td>\n      <td>6</td>\n    </tr>\n    <tr>\n      <th>1596</th>\n      <td>6.3</td>\n      <td>0.510</td>\n      <td>0.13</td>\n      <td>2.3</td>\n      <td>0.076</td>\n      <td>29.0</td>\n      <td>40.0</td>\n      <td>0.99574</td>\n      <td>3.42</td>\n      <td>0.75</td>\n      <td>11.0</td>\n      <td>6</td>\n    </tr>\n    <tr>\n      <th>1597</th>\n      <td>5.9</td>\n      <td>0.645</td>\n      <td>0.12</td>\n      <td>2.0</td>\n      <td>0.075</td>\n      <td>32.0</td>\n      <td>44.0</td>\n      <td>0.99547</td>\n      <td>3.57</td>\n      <td>0.71</td>\n      <td>10.2</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>1598</th>\n      <td>6.0</td>\n      <td>0.310</td>\n      <td>0.47</td>\n      <td>3.6</td>\n      <td>0.067</td>\n      <td>18.0</td>\n      <td>42.0</td>\n      <td>0.99549</td>\n      <td>3.39</td>\n      <td>0.66</td>\n      <td>11.0</td>\n      <td>6</td>\n    </tr>\n  </tbody>\n</table>\n<p>1599 rows × 12 columns</p>\n</div>"
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df = pd.read_csv(\"../data/winequality-red.csv\")\n",
    "df"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "outputs": [
    {
     "data": {
      "text/plain": "   fixed acidity  volatile acidity  citric acid  residual sugar  chlorides  \\\n0            7.4              0.70         0.00             1.9      0.076   \n1            7.8              0.88         0.00             2.6      0.098   \n2            7.8              0.76         0.04             2.3      0.092   \n3           11.2              0.28         0.56             1.9      0.075   \n4            7.4              0.70         0.00             1.9      0.076   \n\n   free sulfur dioxide  total sulfur dioxide  density    pH  sulphates  \\\n0                 11.0                  34.0   0.9978  3.51       0.56   \n1                 25.0                  67.0   0.9968  3.20       0.68   \n2                 15.0                  54.0   0.9970  3.26       0.65   \n3                 17.0                  60.0   0.9980  3.16       0.58   \n4                 11.0                  34.0   0.9978  3.51       0.56   \n\n   alcohol  quality  \n0      9.4        5  \n1      9.8        5  \n2      9.8        5  \n3      9.8        6  \n4      9.4        5  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>fixed acidity</th>\n      <th>volatile acidity</th>\n      <th>citric acid</th>\n      <th>residual sugar</th>\n      <th>chlorides</th>\n      <th>free sulfur dioxide</th>\n      <th>total sulfur dioxide</th>\n      <th>density</th>\n      <th>pH</th>\n      <th>sulphates</th>\n      <th>alcohol</th>\n      <th>quality</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>0</th>\n      <td>7.4</td>\n      <td>0.70</td>\n      <td>0.00</td>\n      <td>1.9</td>\n      <td>0.076</td>\n      <td>11.0</td>\n      <td>34.0</td>\n      <td>0.9978</td>\n      <td>3.51</td>\n      <td>0.56</td>\n      <td>9.4</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>1</th>\n      <td>7.8</td>\n      <td>0.88</td>\n      <td>0.00</td>\n      <td>2.6</td>\n      <td>0.098</td>\n      <td>25.0</td>\n      <td>67.0</td>\n      <td>0.9968</td>\n      <td>3.20</td>\n      <td>0.68</td>\n      <td>9.8</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>2</th>\n      <td>7.8</td>\n      <td>0.76</td>\n      <td>0.04</td>\n      <td>2.3</td>\n      <td>0.092</td>\n      <td>15.0</td>\n      <td>54.0</td>\n      <td>0.9970</td>\n      <td>3.26</td>\n      <td>0.65</td>\n      <td>9.8</td>\n      <td>5</td>\n    </tr>\n    <tr>\n      <th>3</th>\n      <td>11.2</td>\n      <td>0.28</td>\n      <td>0.56</td>\n      <td>1.9</td>\n      <td>0.075</td>\n      <td>17.0</td>\n      <td>60.0</td>\n      <td>0.9980</td>\n      <td>3.16</td>\n      <td>0.58</td>\n      <td>9.8</td>\n      <td>6</td>\n    </tr>\n    <tr>\n      <th>4</th>\n      <td>7.4</td>\n      <td>0.70</td>\n      <td>0.00</td>\n      <td>1.9</td>\n      <td>0.076</td>\n      <td>11.0</td>\n      <td>34.0</td>\n      <td>0.9978</td>\n      <td>3.51</td>\n      <td>0.56</td>\n      <td>9.4</td>\n      <td>5</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1599 entries, 0 to 1598\n",
      "Data columns (total 12 columns):\n",
      " #   Column                Non-Null Count  Dtype  \n",
      "---  ------                --------------  -----  \n",
      " 0   fixed acidity         1599 non-null   float64\n",
      " 1   volatile acidity      1599 non-null   float64\n",
      " 2   citric acid           1599 non-null   float64\n",
      " 3   residual sugar        1599 non-null   float64\n",
      " 4   chlorides             1599 non-null   float64\n",
      " 5   free sulfur dioxide   1599 non-null   float64\n",
      " 6   total sulfur dioxide  1599 non-null   float64\n",
      " 7   density               1599 non-null   float64\n",
      " 8   pH                    1599 non-null   float64\n",
      " 9   sulphates             1599 non-null   float64\n",
      " 10  alcohol               1599 non-null   float64\n",
      " 11  quality               1599 non-null   int64  \n",
      "dtypes: float64(11), int64(1)\n",
      "memory usage: 150.0 KB\n"
     ]
    }
   ],
   "source": [
    "df.info()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [
    {
     "data": {
      "text/plain": "       fixed acidity  volatile acidity  citric acid  residual sugar  \\\ncount    1599.000000       1599.000000  1599.000000     1599.000000   \nmean        8.319637          0.527821     0.270976        2.538806   \nstd         1.741096          0.179060     0.194801        1.409928   \nmin         4.600000          0.120000     0.000000        0.900000   \n25%         7.100000          0.390000     0.090000        1.900000   \n50%         7.900000          0.520000     0.260000        2.200000   \n75%         9.200000          0.640000     0.420000        2.600000   \nmax        15.900000          1.580000     1.000000       15.500000   \n\n         chlorides  free sulfur dioxide  total sulfur dioxide      density  \\\ncount  1599.000000          1599.000000           1599.000000  1599.000000   \nmean      0.087467            15.874922             46.467792     0.996747   \nstd       0.047065            10.460157             32.895324     0.001887   \nmin       0.012000             1.000000              6.000000     0.990070   \n25%       0.070000             7.000000             22.000000     0.995600   \n50%       0.079000            14.000000             38.000000     0.996750   \n75%       0.090000            21.000000             62.000000     0.997835   \nmax       0.611000            72.000000            289.000000     1.003690   \n\n                pH    sulphates      alcohol      quality  \ncount  1599.000000  1599.000000  1599.000000  1599.000000  \nmean      3.311113     0.658149    10.422983     5.636023  \nstd       0.154386     0.169507     1.065668     0.807569  \nmin       2.740000     0.330000     8.400000     3.000000  \n25%       3.210000     0.550000     9.500000     5.000000  \n50%       3.310000     0.620000    10.200000     6.000000  \n75%       3.400000     0.730000    11.100000     6.000000  \nmax       4.010000     2.000000    14.900000     8.000000  ",
      "text/html": "<div>\n<style scoped>\n    .dataframe tbody tr th:only-of-type {\n        vertical-align: middle;\n    }\n\n    .dataframe tbody tr th {\n        vertical-align: top;\n    }\n\n    .dataframe thead th {\n        text-align: right;\n    }\n</style>\n<table border=\"1\" class=\"dataframe\">\n  <thead>\n    <tr style=\"text-align: right;\">\n      <th></th>\n      <th>fixed acidity</th>\n      <th>volatile acidity</th>\n      <th>citric acid</th>\n      <th>residual sugar</th>\n      <th>chlorides</th>\n      <th>free sulfur dioxide</th>\n      <th>total sulfur dioxide</th>\n      <th>density</th>\n      <th>pH</th>\n      <th>sulphates</th>\n      <th>alcohol</th>\n      <th>quality</th>\n    </tr>\n  </thead>\n  <tbody>\n    <tr>\n      <th>count</th>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n      <td>1599.000000</td>\n    </tr>\n    <tr>\n      <th>mean</th>\n      <td>8.319637</td>\n      <td>0.527821</td>\n      <td>0.270976</td>\n      <td>2.538806</td>\n      <td>0.087467</td>\n      <td>15.874922</td>\n      <td>46.467792</td>\n      <td>0.996747</td>\n      <td>3.311113</td>\n      <td>0.658149</td>\n      <td>10.422983</td>\n      <td>5.636023</td>\n    </tr>\n    <tr>\n      <th>std</th>\n      <td>1.741096</td>\n      <td>0.179060</td>\n      <td>0.194801</td>\n      <td>1.409928</td>\n      <td>0.047065</td>\n      <td>10.460157</td>\n      <td>32.895324</td>\n      <td>0.001887</td>\n      <td>0.154386</td>\n      <td>0.169507</td>\n      <td>1.065668</td>\n      <td>0.807569</td>\n    </tr>\n    <tr>\n      <th>min</th>\n      <td>4.600000</td>\n      <td>0.120000</td>\n      <td>0.000000</td>\n      <td>0.900000</td>\n      <td>0.012000</td>\n      <td>1.000000</td>\n      <td>6.000000</td>\n      <td>0.990070</td>\n      <td>2.740000</td>\n      <td>0.330000</td>\n      <td>8.400000</td>\n      <td>3.000000</td>\n    </tr>\n    <tr>\n      <th>25%</th>\n      <td>7.100000</td>\n      <td>0.390000</td>\n      <td>0.090000</td>\n      <td>1.900000</td>\n      <td>0.070000</td>\n      <td>7.000000</td>\n      <td>22.000000</td>\n      <td>0.995600</td>\n      <td>3.210000</td>\n      <td>0.550000</td>\n      <td>9.500000</td>\n      <td>5.000000</td>\n    </tr>\n    <tr>\n      <th>50%</th>\n      <td>7.900000</td>\n      <td>0.520000</td>\n      <td>0.260000</td>\n      <td>2.200000</td>\n      <td>0.079000</td>\n      <td>14.000000</td>\n      <td>38.000000</td>\n      <td>0.996750</td>\n      <td>3.310000</td>\n      <td>0.620000</td>\n      <td>10.200000</td>\n      <td>6.000000</td>\n    </tr>\n    <tr>\n      <th>75%</th>\n      <td>9.200000</td>\n      <td>0.640000</td>\n      <td>0.420000</td>\n      <td>2.600000</td>\n      <td>0.090000</td>\n      <td>21.000000</td>\n      <td>62.000000</td>\n      <td>0.997835</td>\n      <td>3.400000</td>\n      <td>0.730000</td>\n      <td>11.100000</td>\n      <td>6.000000</td>\n    </tr>\n    <tr>\n      <th>max</th>\n      <td>15.900000</td>\n      <td>1.580000</td>\n      <td>1.000000</td>\n      <td>15.500000</td>\n      <td>0.611000</td>\n      <td>72.000000</td>\n      <td>289.000000</td>\n      <td>1.003690</td>\n      <td>4.010000</td>\n      <td>2.000000</td>\n      <td>14.900000</td>\n      <td>8.000000</td>\n    </tr>\n  </tbody>\n</table>\n</div>"
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.describe()"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "(1599, 12)"
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.shape\n",
    "\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "data": {
      "text/plain": "array([1, 1, 1, ..., 1, 1, 1])"
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = df.iloc[:,:-1]\n",
    "y = df[\"quality\"]\n",
    "y = np.where(y > 4, 1, 0)\n",
    "y"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [
    {
     "data": {
      "text/plain": "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n       1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0])"
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:425: FitFailedWarning: \n",
      "10 fits failed out of a total of 20.\n",
      "The score on these train-test partitions for these parameters will be set to nan.\n",
      "If these failures are not expected, you can try to debug them by setting error_score='raise'.\n",
      "\n",
      "Below are more details about the failures:\n",
      "--------------------------------------------------------------------------------\n",
      "10 fits failed with the following error:\n",
      "Traceback (most recent call last):\n",
      "  File \"F:\\python38\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 729, in _fit_and_score\n",
      "    estimator.fit(X_train, y_train, **fit_params)\n",
      "  File \"F:\\python38\\lib\\site-packages\\sklearn\\base.py\", line 1152, in wrapper\n",
      "    return fit_method(estimator, *args, **kwargs)\n",
      "  File \"F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py\", line 1169, in fit\n",
      "    solver = _check_solver(self.solver, self.penalty, self.dual)\n",
      "  File \"F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py\", line 56, in _check_solver\n",
      "    raise ValueError(\n",
      "ValueError: Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.\n",
      "\n",
      "  warnings.warn(some_fits_failed_message, FitFailedWarning)\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\model_selection\\_search.py:979: UserWarning: One or more of the test scores are non-finite: [       nan 0.95978539        nan 0.96067825]\n",
      "  warnings.warn(\n",
      "F:\\python38\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py:460: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
      "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
      "\n",
      "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
      "    https://scikit-learn.org/stable/modules/preprocessing.html\n",
      "Please also refer to the documentation for alternative solver options:\n",
      "    https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
      "  n_iter_i = _check_optimize_result(\n"
     ]
    },
    {
     "data": {
      "text/plain": "0.9606782511210762"
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 逻辑回归\n",
    "lr = LogisticRegression()\n",
    "\n",
    "param = {\"max_iter\":[100,200],\"penalty\":[\"l1\",\"l2\"]}\n",
    "lr = GridSearchCV(lr,param_grid=param,cv=5)\n",
    "lr.fit(X_train,y_train)\n",
    "lr.score(X_train,y_train)\n",
    "\n",
    "# 最佳参数\n",
    "lr.best_params_\n",
    "lr.best_estimator_\n",
    "lr.best_index_\n",
    "lr.best_score_"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "outputs": [
    {
     "data": {
      "text/plain": "0.9625"
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_pred = lr.predict(X_test)\n",
    "accuracy_score(y_test,y_pred)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "outputs": [
    {
     "data": {
      "text/plain": "{'max_depth': 5, 'min_samples_leaf': 1}"
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 决策树\n",
    "dt = DecisionTreeClassifier()\n",
    "\n",
    "param = {\"max_depth\":[5,7,9],\"min_samples_leaf\":[1,3]}\n",
    "dt = GridSearchCV(dt,param_grid=param,cv=5)\n",
    "dt.fit(X_train,y_train)\n",
    "dt.score(X_train,y_train)\n",
    "dt.best_params_\n",
    "# lr.best_estimator_\n",
    "# lr.best_index_\n",
    "# lr.best_score_"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "outputs": [
    {
     "data": {
      "text/plain": "0.9375"
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y1_pred = dt.predict(X_test)\n",
    "accuracy_score(y_test,y1_pred)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "outputs": [
    {
     "data": {
      "text/plain": "0.5"
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score,roc_auc_score\n",
    "# 逻辑回归\n",
    "f1_score(y_test,y_pred)\n",
    "roc_auc_score(y_test,y_pred)"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "outputs": [
    {
     "data": {
      "text/plain": "0.9674620390455532"
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 决策树\n",
    "f1_score(y_test,y1_pred)\n",
    "roc_auc_score(y_test,y1_pred)\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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BwGbIxF9Iw0A8MEr7pj2RiMojeTSBiODxnJDRETlIvT8HUzZcRaZeYWwMjHCN/280LWpo9SxqBpguSEiojKVX6jBgr2X8FPYdQCATx0brBzkA5caHIaiisFyQ0REZSYhJRsBmyNw/lYGAOCj1zww2b8hjBUchqKKw3JDRERl4o+ztzHt13PIyi9EDTNjLO7vhU6NHKSORdUQyw0REb2QvAIN5v5xEZv+SQQAvORWAysG+cDJ2lTiZFRdsdwQEVGpxd3LwthNEYhJyoRMBox5vR4m+jWAEYehSEIsN0REVCq7I2/h813nkKPWoKa5EksHeOO1BrWkjkXEckNERPrJVWswe88FbP33BgDgZQ9bLB/oAwcrE4mTET3EckNERCV2JTkTY0MicDk5CzIZML6TJ8Z39oRCLpM6GpEOyw0REZXI9n9vYNZvF5BboEEtSxWWD/BGu/p2UsciegLLDRERPVN2fiFm/nYeOyNuAQBerW+HpQO8UctSJXEyouKx3BAR0VPFJGVg7KYIxN3LhlwGTOrSAGNerw85h6GoEmO5ISKiJwghsOXMDczecwH5hVo4WKmwYqAP2njUlDoa0XOx3BARURFZ+YX4fOc57Im+DQDo0KAWlvT3Qk0LDkNR1cByQ0REOudvpSMgJAIJ93OgkMswxb8hRrX34DAUVSksN0REBCEEfvn7OubuvQR1oRa1rU2wcrAPWta1lToakd5eqNzk5eXBxIQXbSIiqsoy8gow7dez2HcuCQDg19gei97xQg1zpcTJiEpH75t/aLVazJ07F87OzrCwsMC1a9cAADNnzsS6devKPCAREZWfszfT8OaK49h3LgnGChlmvNkY3w9txWJDVZre5WbevHnYsGEDvv76ayiV//vhb9asGX744YcyDUdEROVDCIH1J+LR99tTuJGaC5captj+cTt82N4DMhnn11DVpne52bhxI7777jsMGTIECoVCt9zLywsxMTFlGo6IiMpeek4BPvo5HF/+cREFGoFuTR2xd3x7eLvaSB2NqEzoPefm1q1bqF+//hPLtVotCgoKyiQUERGVj4jEBxgXEolbablQKuT44s3GGNq2Lo/WkEHRu9w0adIEx48fR926dYss37FjB3x8fMosGBERlR2tVuCHE9fwdWgsCrUCdWuaIXiQL5q7WEsdjajM6V1uZs2ahWHDhuHWrVvQarXY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oEEDNGjQABMnTsSgQYPw448/4u2334avry8uXrz4RIl6HrlcXuw2VlZWqF27Nk6ePIkOHTrolp88eRKtW7cust6AAQMwYMAAvPPOO+jWrRtSU1Nha2tb5PkezW/RaDTPzGNiYoI+ffpg06ZNuHr1Kho2bAhfX1/d476+voiNjdX7fT5uxowZ6NSpE0aPHq17n+3atcOYMWN06zx+5EWpVD6R39fXF1u3boW9vT2srKxeKBORIeKEYqJqpH79+igoKMDKlStx7do1/Pzzz1izZs1T18/NzUVAQACOHj2K69ev4+TJkzhz5oxuuOmzzz7DqVOnEBAQgKioKFy5cgW//fab3hOK/2vKlCn46quvsHXrVsTGxmLatGmIiorChAkTAABLlizB5s2bERMTg8uXL2P79u1wdHQs9sKD9vb2MDU1RWhoKJKTk5Genv7U1x0yZAj27t2L9evX6yYSPzJr1ixs3LgRc+bMwYULF3Dp0iVs2bIFM2bM0Ou9tW3bFi1atMCCBQsAAJ6envj3339x4MABXL58GTNnzsSZM2eKbOPm5oazZ88iNjYWKSkpKCgowJAhQ2BnZ4devXrh+PHjiI+Px9GjRzF+/HjcvHlTr0xEBknqST9EVPaKm4T6yJIlS4STk5MwNTUV/v7+YuPGjQKAePDggRCi6ITf/Px8MXDgQOHq6iqUSqWoXbu2CAgIKDJZ+PTp06JLly7CwsJCmJubixYtWjwxIfi/Hp9Q/DiNRiNmz54tnJ2dhbGxsfDy8hL79+/XPf7dd98Jb29vYW5uLqysrETnzp1FRESE7nH8Z0KxEEJ8//33wtXVVcjlctGhQ4en7h+NRiOcnJwEABEXF/dErtDQUNGuXTthamoqrKysROvWrcV333331PcRGBgovLy8nli+efNmoVKpRGJiosjLyxPDhw8X1tbWwsbGRowePVpMmzatyHZ3797V7V8A4s8//xRCCHHnzh0xdOhQYWdnJ1QqlfDw8BAjR44U6enpT81EVF3IhBBC2npFREREVHY4LEVEREQGheWGiIiIDArLDRERERkUlhsiIiIyKCw3REREZFBYboiIiMigsNwQERGRQWG5ISIiIoPCckNEREQGheWGiIiIDArLDRERERmU/wduJjrtXDxJegAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.metrics import RocCurveDisplay\n",
    "from sklearn import metrics\n",
    "import matplotlib.pyplot as plt\n",
    "fpr, tpr, thresholds = metrics.roc_curve(y_test, y_pred)\n",
    "roc_auc = metrics.auc(fpr, tpr)\n",
    "display = metrics.RocCurveDisplay(fpr=fpr, tpr=tpr, roc_auc=roc_auc,\n",
    "                                  estimator_name='example estimator')\n",
    "display.plot()\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fpr, tpr, thresholds = metrics.roc_curve(y_test, y1_pred)\n",
    "roc_auc = metrics.auc(fpr, tpr)\n",
    "display = metrics.RocCurveDisplay(fpr=fpr, tpr=tpr, roc_auc=roc_auc,\n",
    "                                  estimator_name='example estimator')\n",
    "display.plot()\n",
    "plt.show()\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "outputs": [
    {
     "data": {
      "text/plain": "array([[ 0.08890222, -2.63515434, -0.38596806, -0.12977547, -0.59147964,\n         0.01214214,  0.01257047,  0.09496254, -0.62438301,  0.44288355,\n         0.3509419 ]])"
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr1 = lr.best_estimator_\n",
    "lr1.coef_"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "outputs": [
    {
     "data": {
      "text/plain": "array([0.08986831, 0.26783806, 0.        , 0.1520991 , 0.05326942,\n       0.        , 0.10487417, 0.06343995, 0.        , 0.17923919,\n       0.0893718 ])"
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dt1 = dt.best_estimator_\n",
    "# 特征重要性\n",
    "dt1.feature_importances_\n"
   ],
   "metadata": {
    "collapsed": false,
    "pycharm": {
     "name": "#%%\n"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}